package com.shop.framework.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.shop.framework.context.WebContext;

/**
 * Session과 로그인에 관한 interceptor
 * @author geryon
 *
 */
public class SessionInterceptor implements HandlerInterceptor {

	/**
	 *  클라이언트의 요청을 처리한뒤 즉 뷰를 통해서 클라이언트에 응답을 전송한 뒤에 실행된다
	 * 컨트롤러가 처리하는 도중이나 뷰를 생성하는 과정에 예외가 발생해도 실행된다.
	 */

	@Override
	public void afterCompletion(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		// TODO Auto-generated method stub
		
	}

	/**
	 *  컨트롤러가 요청을 처리한 뒤에 호출된다
	 */
	@Override
	public void postHandle(HttpServletRequest req, HttpServletResponse res,
			Object handler, ModelAndView mav) throws Exception {
		
		mav.addObject("COMMON", "TEST");
	}

	/**
	 *  클라이언트 요청을 컨트롤러에 전달하기 전에 호출
	 */
	@Override
	public boolean preHandle(HttpServletRequest req, HttpServletResponse res,
			Object handler) throws Exception {
		// TODO Auto-generated method stub
		WebContext.set(req, res);
		req.setAttribute("__TO__", System.currentTimeMillis());
		return true;
	}


}
